package com.apolo;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.conexiones.WebService;

import android.R.bool;
import android.net.ConnectivityManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class Registro extends Activity {
	
	private EditText txtNombre;
	private EditText txtEmail;
	private EditText txtNumero;
	private WebService webService;
	private String id;
	private int usuarioYaRegistrado;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.registro);
		this.id = getIntent().getExtras().getString("id");
		this.txtNombre = (EditText)findViewById(R.id.txtNombre);
		this.txtEmail = (EditText)findViewById(R.id.txtEmail);
		this.txtNumero = (EditText)findViewById(R.id.txtTelefono);
		this.usuarioYaRegistrado=0;
	}

	public void inscribir(View view){
		if(hayInternet()){
			this.webService = new WebService();
			String nombre = this.txtNombre.getText().toString();
			String email = this.txtEmail.getText().toString();
			String telefono = this.txtNumero.getText().toString();
			
			if (nombre.equals("") || email.equals("") || telefono.equals("")) {
				Toast.makeText(this, "Debes completar todos los campos.",
						Toast.LENGTH_LONG).show();
			}
			else if (telefono.length() < 10) {
				Toast.makeText(this, "Debes ingresar un telefono de al menos 10 digitos.",
						Toast.LENGTH_LONG).show();
			} 
			else if (!email
					.matches("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$")) {
				Toast.makeText(this, "Debes ingresar un email valido.",
						Toast.LENGTH_LONG).show();
			} 
			else {
				new Enviar().execute(nombre, email, telefono);
			}
		}
		else{
			Toast.makeText(this, "Necesitas una conexión a internet para" +
					" preinscribirte a este curso.", Toast.LENGTH_LONG).show();
		}
	}

	private boolean hayInternet() {
		ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
		if (cm.getActiveNetworkInfo() != null
				&& cm.getActiveNetworkInfo().isAvailable()
				&& cm.getActiveNetworkInfo().isConnected()) {
			return true;
		} else {
			return false;
		}
	}
	
	private class Enviar extends AsyncTask<String, Void, Boolean> {

		private Dialog dialog = new Dialog(Registro.this);

		@Override
		protected void onPreExecute() {
			super.onPreExecute();
			dialog.setTitle("Registrando información...");
			dialog.setCancelable(false);
	        dialog.show();
		}

		@Override
		protected Boolean doInBackground(String... arg0) {
			String[] parametros = { "inscripcion", arg0[0], arg0[1], arg0[2], id };
			JSONArray respuesta = webService.conectar(parametros);
			try {
				JSONObject res = respuesta.getJSONObject(0);
				if (res.getString("respuesta").equals("esta")) {
					usuarioYaRegistrado=1;
					return true;
				} else if (res.getString("respuesta").equals("true")) {
					usuarioYaRegistrado=0;
					return true;
				}
				else{
					return false;
				}
			} catch (JSONException e) {
				return false;
			}
		}

		@Override
		protected void onPostExecute(Boolean result) {
			super.onPostExecute(result);
			dialog.dismiss();
			if(result && usuarioYaRegistrado==0){
				Toast.makeText(getApplicationContext(), "Tu registro ha sido enviado satisfactoriamente", Toast.LENGTH_LONG).show();
				finish();
			}
			else if(result && usuarioYaRegistrado==1){
				Toast.makeText(getApplicationContext(), "Ya has sido registrado en este curso anteriormente", Toast.LENGTH_LONG).show();
				finish();
			}
			else{
				Toast.makeText(getApplicationContext(), "Lo sentimos.\n" +
						"Tu información no se ha registrado correctamente.\n" +
						"Por favor intentalo de nuevo más tarde.", Toast.LENGTH_LONG).show();
			}
		}
	}
}
